perm filename REVAL[F75,JMC] blob
sn#196432 filedate 1976-01-15 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00007 ENDMK
Cā;
(DEFPROP ALLFNS
(NIL OEV REV1 REV COUNT SUBB ELEM OEVAL OEVAL2 REVAL2 REVAL1 REVAL PRUP X1 X2 X3 X4 X5)
VALUE)
(DEFPROP OEV
(LAMBDA (U V) ((LAMBDA (M N) (LIST (OEVAL U V) COUNT C2)) (SETQ COUNT 0)(SETQ C2 0)))
EXPR)
(DEFPROP REV1
(LAMBDA (U V) ((LAMBDA (M) (CONS (REVAL1 U V) COUNT)) (SETQ COUNT 0)))
EXPR)
(DEFPROP REV
(LAMBDA (U V) ((LAMBDA (M N) (LIST (REVAL U V) COUNT C2)) (SETQ COUNT 0)(SETQ C2 0)
))
EXPR)
(DEFPROP COUNT
(NIL . 4)
VALUE)
(DEFPROP SUBB
(LAMBDA (X Y Z) (IF (ATOM Z) (IF (EQ Y Z) X Z) (CONS (SUBB X Y (CAR Z)) (SUBB X Y (CDR Z)))))
EXPR)
(DEFPROP ELEM
(NIL ATOM EQ EQUAL CAR CDR CONS NULL LIST CADR CAAR CDAR CDDR PLUS DIFFERENCE
ADD1 SUB1)
VALUE)
(DEFPROP OEVAL
(LAMBDA(E A)
((LAMBDA(V)
(COND ((ATOM E) (CDR (ASSOC E A)))
((EQ (CAR E) (QUOTE QUOTE)) (CADR E))
((EQ (CAR E) (QUOTE IF)) (COND ((OEVAL (CADR E) A) (OEVAL (CADDR E) A)) (T (OEVAL (CADDDR E) A))))
((MEMBER (CAR E) ELEM)
(EVAL (CONS (CAR E) (MAPCAR (FUNCTION (LAMBDA (W) (LIST (QUOTE QUOTE) (OEVAL W A)))) (CDR E)))))
(T
(OEVAL2 E A)
)))
(SETQ COUNT (ADD1 COUNT))))
EXPR)
(DEFPROP REVAL1
(LAMBDA(E A)
((LAMBDA(V)
(COND ((ATOM E) ((LAMBDA (W) (REVAL1 (CAR W) (CADR W))) (CDR (ASSOC E A))))
((EQ (CAR E) (QUOTE QUOTE)) (CADR E))
((EQ (CAR E) (QUOTE IF)) (COND ((REVAL1 (CADR E) A) (REVAL1 (CADDR E) A)) (T (REVAL1 (CADDDR E) A))))
((MEMBER (CAR E) ELEM)
(EVAL (CONS (CAR E) (MAPCAR (FUNCTION (LAMBDA (W) (LIST (QUOTE QUOTE) (REVAL1 W A)))) (CDR E)))))
(T
((LAMBDA(W)
(REVAL1 (CADDR W) (APPEND (PRUP (CADR W) (MAPCAR (FUNCTION (LAMBDA (Z) (LIST Z A))) (CDR E))) A)))
(GET (CAR E) (QUOTE EXPR))))))
(SETQ COUNT (ADD1 COUNT))))
EXPR)
(DEFPROP REVAL
(LAMBDA(E A)
((LAMBDA(V)
(COND ((ATOM E)
((LAMBDA(W)
((LAMBDA (Z) ((LAMBDA (U) Z) (RPLACD W (LIST (LIST (QUOTE QUOTE) Z) NIL))))
(REVAL (CADR W) (CADDR W))))
(ASSOC E A)))
((EQ (CAR E) (QUOTE QUOTE)) (CADR E))
((EQ (CAR E) (QUOTE IF)) (COND ((REVAL (CADR E) A) (REVAL (CADDR E) A)) (T (REVAL (CADDDR E) A))))
((MEMBER (CAR E) ELEM)
(EVAL (CONS (CAR E) (MAPCAR (FUNCTION (LAMBDA (W) (LIST (QUOTE QUOTE) (REVAL W A)))) (CDR E)))))
(T
(REVAL2 E A)
)))
(SETQ COUNT (ADD1 COUNT))))
EXPR)
(DE REVAL2 (E A) ((LAMBDA (X)
((LAMBDA(W)
(REVAL (CADDR W) (APPEND (PRUP (CADR W) (MAPCAR (FUNCTION (LAMBDA (Z) (LIST Z A))) (CDR E))) A)))
(GET (CAR E) (QUOTE EXPR)))
)(SETQ C2 (ADD1 C2))))
(DE OEVAL2 (E A) ((LAMBDA (X)
((LAMBDA(Z)
(OEVAL (CADDR Z) (APPEND (PRUP (CADR Z) (MAPCAR (FUNCTION (LAMBDA (W) (OEVAL W A))) (CDR E))) A)))
(GET (CAR E) (QUOTE EXPR)))
)(SETQ C2 (ADD1 C2))))
(DEFPROP PRUP
(LAMBDA (U V) (COND ((NULL U) NIL) (T (CONS (CONS (CAR U) (CAR V)) (PRUP (CDR U) (CDR V))))))
EXPR)
(DEFPROP X1
(NIL (U (QUOTE (A B)) NIL) (V (QUOTE C) NIL) (W (QUOTE (C . C)) NIL))
VALUE)
(DEFPROP X2
(NIL (U A B) (V . C) (W C . C))
VALUE)
(DEFPROP X3
(NIL SUBB (QUOTE A) (QUOTE X) (QUOTE (((X . X) (X . X)) (X . X) X . X)))
VALUE)